package com.boarsoft.boar.soagov.svc;

import com.boarsoft.bean.ReplyInfo;
import com.boarsoft.boar.entity.SvcInfo;
import com.boarsoft.common.dao.PagedResult;

public interface SvcBiz {
	/**
	 * 删除某个服务，同时删除对应的目录和组件<br/>
	 * 如果服务被其它服务依赖，则返回INFO_INUSE
	 *
	 * @param id
	 * @return
	 */
	ReplyInfo<Object> delete(String id);

	/**
	 * 启用指定服务，此服务将被打包部署
	 *
	 * @param id
	 * @return
	 */
	boolean status(String id, short status);

	/**
	 * 获取指定Svc/Flow的信息
	 *
	 * @param id
	 * @return
	 */
	SvcInfo get(String id);

	/**
	 * 查询某系统中的所有服务
	 *
	 * @param projId
	 * @param key
	 * @param orderBy
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<SvcInfo> list(String projId, String key, String orderBy, int pageNo,
			int pageSize);

	/**
	 * 复制服SvcInfo，Flow（data目录），ObjFaces，SoaNexus
	 * 
	 * @param sourceId
	 *            被拷贝的节点的ID
	 * @param parentId
	 *            目标节点（新节点的父节点）
	 * @param newId
	 *            新节点的ID（需要与DirInfo一致）
	 * @return
	 */
	String copy(String sourceId, String parentId, String newId);

	/**
	 * 移动服务，暂无别的动作（只需移动对应的DirInfo），未来有libId后libId可能会变
	 * 
	 * @param id
	 *            被拷贝的节点的ID
	 * @param to
	 *            目标节点（新节点的父节点）
	 * @return
	 */
	boolean move(String id, String to);
	
	/**
	 * 仅保存服务信息
	 * 
	 * @param svcInfo
	 */
	public void save(SvcInfo svcInfo);
}
